import java.util.ArrayList;
import java.util.HashMap;


public class BaseDatos {
HashMap<String,Object>lista;
String ultpersonaje;
String ultbatallon;
String ultarmas;
String ultsuelo;
	BaseDatos(){
		
		LeerArchivoTexto a=new LeerArchivoTexto();
		LeerBatallon b=new LeerBatallon();
		LeeArmas c=new LeeArmas();
		LeerPersonaje d=new LeerPersonaje();
		
		this.lista=new HashMap<String,Object>();
		
		ArrayList<Suelos> sueloslist;//"SXXX"
		ArrayList<Batallon> batallonlist;//"BXXX"
		ArrayList<Arma> armaslist;//"AXXX"
		ArrayList<Personaje> personajelist;//"PXXX"
		
		batallonlist=new ArrayList<Batallon>();
		armaslist=new ArrayList<Arma>();
		personajelist=new ArrayList<Personaje>();
		sueloslist= new ArrayList<Suelos>();
		
		sueloslist.addAll(a.Sueloslist);
		batallonlist.addAll(b.BatallonList);
		armaslist.addAll(c.ListArmas);
		personajelist.addAll(d.personajeList);
		
		for(Suelos aux1:sueloslist){
			this.lista.put(aux1.getCodigo(),aux1);
		}
		for(Personaje aux1:personajelist){
			this.lista.put(aux1.getCodigo(),aux1);
		}
		for(Arma aux1:armaslist){
			this.lista.put(aux1.getCodigo(),aux1);
		}
		for(Batallon aux1:batallonlist){
			this.lista.put(aux1.getCodigoBatallon(),aux1);
		}
		this.ultarmas=this.ultcod('A');
		this.ultbatallon=this.ultcod('B');
		this.ultpersonaje=this.ultcod('P');
		this.ultsuelo=this.ultcod('S');
	}
	
	static String codigoconverter(Character a,int n){
		String aux=String.valueOf(a);
		if(n<10)aux=aux.concat("00");
		else if(n<100)aux=aux.concat("0");
		return aux.concat(String.valueOf(n));
	}
	
	String ultcod(Character a){
		String aux;
		for(Integer i=1;i<1000;i++){
			aux=BaseDatos.codigoconverter(a,i);
			if(!this.lista.containsKey(aux))return BaseDatos.codigoconverter(a,i-1);
		}
		return null;
	}
	
	
	Boolean existe(String codigo){
		return this.lista.containsKey(codigo);
	}
	Object get(String codigo){
		return this.lista.get(codigo);
	}
	
	void modificar(String codigo,Object modificado){
		this.lista.remove(codigo);
		this.lista.put(codigo, modificado);
	}
	
}
